// 缓存工具 (模块)
const CacheUtil = {
  /**
   * 设置缓存的方法
   * @param {string} key 要存入缓存的key
   * @param {any} value 要存入缓存的值
   * @param {number} expireSeconds 设置的过期时间(秒)
  */
  set(key,value,expireSeconds) {
    try {
      // 过期时间 = 当前时间 + 设置的过期时间 (时间可以做加法：)
      const expire = Date.now() + expireSeconds * 1000;

      // 构建要缓存的数据 = 过期时间 和 真正要缓存的页面数据
      const data = {
        expire, // 过期时间
        value // 真正需要缓存的页面数据
      }
      // 存入缓存中
      wx.setStorageSync(key, data);
    } catch (error) {
      console.error("设置缓存异常:",error);
    }
  },

  // 获取缓存 (自动清空缓存)
  get(key){
      try {
        const cachedData = wx.getStorageSync(key);
        // 如果缓存不存在
        if(!cachedData) return null;
        // 如果缓存过期
        if(Date.now() > cachedData.expire){
          // 移除过期缓存
          wx.removeStorageSync(key);
          return null;
        }
        // 缓存正常 返回缓存的页面数据
        return cachedData.value;
      } catch (error) {
        console.error("获取缓存异常:", error);
      }
  },

  //清除过期缓存
  clearExpired(){
    try{
        // 清空所有缓存 wx.clearStorage()
        // 获取到全部缓存的key,是一个数组
        const keys = wx.getStorageInfoSync().keys;
        keys.forEach(key => { // 遍历数组的每一个key, 用每一个key调用get方法
          this.get(key) // 调用get方法清除过期缓存
      })
    }catch (error) {
      console.error("清除过期缓存失败:", error);
    }
  }
}


// 导出模块
module.exports = {
  CacheUtil
}